#include <iostream>

/*
    顶层指针：使用 constexpr 声明的指针就是，表示常量指针，地址无法修改，值可以修改。
    底层指针：一种指向常量的指针，指向的地址可以修改，值不能修改。
*/

constexpr int size(const int& var)
{
    return sizeof(var);
}

void constexpr_func()
{
    constexpr int mf = 20;
    constexpr int limit = mf + 1;
    constexpr int sizen = size(limit);
    std::cout << sizen << " " << limit << " " << mf << std::endl;
}

void pointer_constexpr()
{
    // The pointer 'p' can be modified, but the value pointed to by '*p' cannot be changed.
    const int *p = nullptr;
    // The pointer 'q' cannot be modified, but the value pointed to by '*q' can be changed.
    constexpr int *q = nullptr;
}

int main()
{
    constexpr_func();
    return 0;
}